import re
from typing import List
from .recipe import Recipe

def parse_recipes_from_pdf(pdf_text: str) -> List[Recipe]:
    """
    从PDF文本中解析出所有菜谱信息
    
    此函数遵循 'PDF菜谱数据解析规范' (id: 4a7d4b48-ca43-4d52-ac07-2372e474ab64)，
    必须明确提取‘菜品名称’、‘材料’、‘做法’三个字段，将其组织为字典结构，并添加到统一的列表中。
    
    Args:
        pdf_text (str): PDF文档的原始文本内容
    
    Returns:
        List[Recipe]: 包含所有解析出的菜谱条目的列表
    

    """
    # 使用正则表达式匹配菜谱条目
    # 假设每个菜谱以“菜品名称：”开头，后面跟着“材料：”和“做法：”
    pattern = r'(?:菜品名称：|Name：)([^\n]+)\s*(?:材料：|Materials：)([^\n]+)\s*(?:做法：|Method：)([^\n]*)'
    matches = re.findall(pattern, pdf_text, re.DOTALL)
    
    recipes = []
    for match in matches:
        name, materials, method = match
        # 清理字段中的空白字符
        name = name.strip()
        materials = materials.strip()
        method = method.strip()
        
        # 创建Recipe对象并添加到列表
        recipe = Recipe(
            name=name,
            materials=materials,
            method=method
        )
        recipes.append(recipe)
    
    return recipes
